Example: allocate 2D array, initialise and delete it.
wvoid de_allocate(long double **data) {
w   for (int i = 0; i < NumRows;  i++)
w       delete[] data[i]; // STEP 1: delete the columns
w   delete[] data;  // STEP 2: delete the rows
w   }
w
wvoid initialise(long double ** data){
wfor (int i = 0; i < NumRows; i++)
w      for (int j = 0; j < NumCols; j++)
w         data[i][j] = i + j;   // arbitrary initialisation
w}